<html>
  <head>
    <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>IntelliJ IDEA 快捷键 | 清汤牛肉锅</title>
<meta name="description" content="温故而知新
" />
<link rel="shortcut icon" href="https://ArtZoick.github.io//favicon.ico?v=1572228390311">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css">
<link rel="stylesheet" href="https://ArtZoick.github.io//styles/main.css">

<script src="https://cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Droid+Serif:400,700">


<script async src="https://www.googletagmanager.com/gtag/js?id=UA-143265163-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-143265163-1');
</script>


  </head>
  <body>
    <div class="main">
      <div class="main-content">
        <div class="site-header">
  <a href="https://ArtZoick.github.io/">
  <img class="avatar" src="https://ArtZoick.github.io//images/avatar.png?v=1572228390311" alt="">
  </a>
  <h1 class="site-title">
    清汤牛肉锅
  </h1>
  <p class="site-description">
    温故而知新

  </p>
  <div class="menu-container">
    
      
        <a href="/" class="menu">
          首页
        </a>
      
    
      
        <a href="/archives" class="menu">
          归档
        </a>
      
    
      
        <a href="/tags" class="menu">
          标签
        </a>
      
    
      
        <a href="/post/about" class="menu">
          关于
        </a>
      
    
      
        <a href="/post/beef" class="menu">
          牛肉锅
        </a>
      
    
  </div>
  <div class="social-container">
    
      
    
      
    
      
    
      
    
      
    
  </div>
</div>

        <div class="post-detail">
          <article class="post">
            <h2 class="post-title">
              IntelliJ IDEA 快捷键
            </h2>
            <div class="post-info">
              <span>
                2019-07-15
              </span>
              <span>
                12 min read
              </span>
              
            </div>
            
            <div class="post-content-wrapper">
              <div class="post-content">
                <p><a href="https://mp.weixin.qq.com/s?__biz=MzUyNDkzNzczNQ==&amp;mid=2247487161&amp;idx=1&amp;sn=790d7c7f77a78fd307ea0124cd167a3c&amp;chksm=fa24f1d1cd5378c7c3488cd0e5fb5285eac1a1d15a7e94b0fb5f0f04ae716cb3329452628330&amp;mpshare=1&amp;scene=1&amp;srcid=&amp;key=0c05566442c631fc47a93564df35275d8492002c1773792ef2f593d5d6e160284d1aef52f03c55fc952ff0e2901ae609bf10ae612bb51fbff2c415b0361eea1edf8551811b52be46166a589db0c396fd&amp;ascene=1&amp;uin=MjU3MjY4MzYwMQ%3D%3D&amp;devicetype=Windows+10&amp;version=62060834&amp;lang=zh_CN&amp;pass_ticket=nKMxnj7FG6IE%2FDE7PG3CnhiQs6vjvkAd4q%2FmMR0xc6WD3wZ891aJh8iMnIqMNsVp">来源于公众号</a></p>
<h2 id="自动代码"><strong>▌自动代码</strong></h2>
<p>常用的有 fori/sout/psvm+Tab 即可生成循环、System.out、main 方法等 boilerplate 样板代码 。</p>
<p><strong>例如要输入 for(User user : users) 只需输入 user.for+Tab ；</strong></p>
<p><strong>再比如，要输入 Date birthday = user.getBirthday() 只需输入user.getBirthday().var+Tab 即可。</strong></p>
<p>代码标签输入完成后，按 Tab，生成代码。</p>
<ol>
<li>Ctrl+Alt+O 优化导入的类和包</li>
<li>Alt+Insert 生成代码(如 get,set 方法,构造函数等)   或者右键（Generate）</li>
<li>fori/sout/psvm + Tab</li>
<li>Ctrl+Alt+T  生成 try catch  或者 Alt+enter</li>
<li>CTRL+ALT+T  把选中的代码放在 TRY{} IF{} ELSE{} 里</li>
<li>Ctrl + O 重写方法</li>
<li>Ctrl + I 实现方法</li>
<li>Ctr+shift+U 大小写转化</li>
<li>ALT+回车    导入包,自动修正</li>
<li>ALT+/       代码提示</li>
<li>CTRL+J      自动代码</li>
<li>Ctrl+Shift+J，整合两行为一行</li>
<li>CTRL+空格   代码提示</li>
<li>CTRL+SHIFT+SPACE 自动补全代码</li>
<li>CTRL+ALT+L  格式化代码</li>
<li>CTRL+ALT+I  自动缩进</li>
<li>CTRL+ALT+O  优化导入的类和包</li>
<li>ALT+INSERT  生成代码(如 GET,SET 方法,构造函数等)</li>
<li>CTRL+E      最近更改的代码</li>
<li>CTRL+ALT+SPACE  类名或接口名提示</li>
<li>CTRL+P   方法参数提示</li>
<li>CTRL+Q，可以看到当前方法的声明</li>
<li>Shift+F6  重构-重命名 (包、类、方法、变量、甚至注释等)</li>
<li>Ctrl+Alt+V 提取变量</li>
</ol>
<h2 id="查询快捷键"><strong>▌查询快捷键</strong></h2>
<ol>
<li>Ctrl＋Shift＋Backspace 可以跳转到上次编辑的地</li>
<li>CTRL+ALT+ left/right 前后导航编辑过的地方</li>
<li>ALT+7  靠左窗口显示当前文件的结构</li>
<li>Ctrl+F12 浮动显示当前文件的结构</li>
<li>ALT+F7 找到你的函数或者变量或者类的所有引用到的地方</li>
<li>CTRL+ALT+F7  找到你的函数或者变量或者类的所有引用到的地方</li>
<li>Ctrl+Shift+Alt+N 查找类中的方法或变量</li>
<li>双击SHIFT 在项目的所有目录查找文件</li>
<li>Ctrl+N   查找类</li>
<li>Ctrl+Shift+N 查找文件</li>
<li>CTRL+G   定位行</li>
<li>CTRL+F   在当前窗口查找文本</li>
<li>CTRL+SHIFT+F  在指定窗口查找文本</li>
<li>CTRL+R   在 当前窗口替换文本</li>
<li>CTRL+SHIFT+R  在指定窗口替换文本</li>
<li>ALT+SHIFT+C  查找修改的文件</li>
<li>CTRL+E   最近打开的文件</li>
<li>F3   向下查找关键字出现位置</li>
<li>SHIFT+F3  向上一个关键字出现位置</li>
<li>选中文本，按Alt+F3 ，高亮相同文本，F3逐个往下查找相同文本</li>
<li>F4   查找变量来源</li>
<li>CTRL+SHIFT+O  弹出显示查找内容</li>
<li>Ctrl+W 选中代码，连续按会有其他效果</li>
<li>F2 或Shift+F2 高亮错误或警告快速定位</li>
<li>Ctrl+Up/Down 光标跳转到第一行或最后一行下</li>
<li>Ctrl+B 快速打开光标处的类或方法</li>
<li>CTRL+ALT+B  找所有的子类</li>
<li>CTRL+SHIFT+B  找变量的类</li>
<li>Ctrl+Shift+上下键  上下移动代码</li>
<li>Ctrl+Alt+ left/right 返回至上次浏览的位置</li>
<li>Ctrl+X 删除行</li>
<li>Ctrl+D 复制行</li>
<li>Ctrl+/ 或 Ctrl+Shift+/  注释（// 或者/<em>...</em>/ ）</li>
<li>Ctrl+H 显示类结构图</li>
<li>Ctrl+Q 显示注释文档</li>
<li>Alt+F1 查找代码所在位置</li>
<li>Alt+1 快速打开或隐藏工程面板</li>
<li>Alt+ left/right 切换代码视图</li>
<li>ALT+ ↑/↓  在方法间快速移动定位</li>
<li>CTRL+ALT+ left/right 前后导航编辑过的地方</li>
<li>Ctrl＋Shift＋Backspace可以跳转到上次编辑的地</li>
<li>Alt+6    查找TODO</li>
</ol>
<h2 id="其他快捷键"><strong>▌其他快捷键</strong></h2>
<ol>
<li>SHIFT+ENTER 另起一行</li>
<li>CTRL+Z   倒退(撤销)</li>
<li>CTRL+SHIFT+Z  向前(取消撤销)</li>
<li>CTRL+ALT+F12  资源管理器打开文件夹</li>
<li>ALT+F1   查找文件所在目录位置</li>
<li>SHIFT+ALT+INSERT 竖编辑模式</li>
<li>CTRL+F4  关闭当前窗口</li>
<li>Ctrl+Alt+V，可以引入变量。例如：new String(); 自动导入变量定义</li>
<li>Ctrl+~，快速切换方案（界面外观、代码风格、快捷键映射等菜单）</li>
</ol>
<h2 id="svn快捷键"><strong>▌svn快捷键</strong></h2>
<ol>
<li>ctrl+k 提交代码到SVN</li>
<li>ctrl+t 更新代码</li>
</ol>
<h2 id="调试快捷键"><strong>▌调试快捷键</strong></h2>
<p>其实常用的 就是 F8 F7 F9 最值得一提的就是 Drop Frame 可以让运行过的代码从头再来。</p>
<ol>
<li>alt+F8    debug 时选中查看值</li>
<li>Alt+Shift+F9，选择 Debug</li>
<li>Alt+Shift+F10，选择 Run</li>
<li>Ctrl+Shift+F9，编译</li>
<li>Ctrl+Shift+F8，查看断点</li>
<li>F7，步入</li>
<li>Shift+F7，智能步入</li>
<li>Alt+Shift+F7，强制步入</li>
<li>F8，步过</li>
<li>Shift+F8，步出</li>
<li>Alt+Shift+F8，强制步过</li>
<li>Alt+F9，运行至光标处</li>
<li>Ctrl+Alt+F9，强制运行至光标处</li>
<li>F9，恢复程序</li>
<li>Alt+F10，定位到断点</li>
</ol>
<h2 id="重构"><strong>▌重构</strong></h2>
<ol>
<li>Ctrl+Alt+Shift+T，弹出重构菜单</li>
<li>Shift+F6，重命名</li>
<li>F6，移动</li>
<li>F5，复制</li>
<li>Alt+Delete，安全删除</li>
<li>Ctrl+Alt+N，内联</li>
</ol>
<h2 id="十大intellij-idea快捷键"><strong>▌十大Intellij IDEA快捷键</strong></h2>
<p>Intellij IDEA 中有很多快捷键让人爱不释手，stackoverflow 上也有一些有趣的讨论。</p>
<p>每个人都有自己的最爱，想排出个理想的榜单还真是困难。</p>
<p>以前也整理过Intellij的快捷键，这次就按照我日常开发时的使用频率，简单分类列一下我最喜欢的十大快捷-神-键吧。</p>
<p><strong>1 智能提示:</strong></p>
<p>Intellij 首当其冲的当然就是 Intelligence 智能！</p>
<p>基本的代码提示用 Ctrl+Space，还有更智能地按类型信息提示  Ctrl+Shift+Space，但因为Intellij总是随着我们敲击而自动提示，所以很多时候都不会手动敲这两个快捷键(除非提示框消失了)。</p>
<p>用 F2/ Shift+F2 移动到有错误的代码，Alt+Enter 快速修复(即 Eclipse中的 Quick Fix 功能)。</p>
<p>当智能提示为我们自动补全方法名时，我们通常要自己补上行尾的反括号和分号，当括号嵌套很多层时会很麻烦，这时我们只需敲 Ctrl+Shift+Enter 就能自动补全末尾的字符。</p>
<p>而且不只是括号，例如敲完 if/for 时也可以自动补上 {} 花括号。</p>
<p>最后要说一点，Intellij 能够智能感知 Spring、Hibernate 等主流框架的配置文件和类，以静制动，在看似“静态”的外表下，智能地扫描理解你的项目是如何构造和配置的。</p>
<p><strong>2 重构:</strong></p>
<p>Intellij 重构是另一完爆 Eclipse 的功能，其智能程度令人瞠目结舌，比如提取变量时自动检查到所有匹配同时提取成一个变量等。</p>
<p>尤其看过《重构-改善既有代码设计》之后，有了 Intellij 的配合简直是令人大呼过瘾！也正是强大的智能和重构功能，使 Intellij 下的 TDD 开发非常顺畅。</p>
<p>切入正题，先说一个无敌的重构功能大汇总快捷键 Ctrl+Shift+Alt+T，叫做 Refactor This。</p>
<p>按法有点复杂，但也符合 Intellij 的风格，很多快捷键都要双手完成，而不像 Eclipse 不少最有用的快捷键可以潇洒地单手完成(不知道算不算 Eclipse 的一大优点)，但各位用过 Emacs 的话就会觉得也没什么了(非 Emacs 黑)。</p>
<p>此外，还有些最常用的重构技巧，因为太常用了，若每次都在Refactor This 菜单里选的话效率有些低。</p>
<p>比如 Shift+F6 直接就是改名，Ctrl+Alt+V 则是提取变量。</p>
<p><strong>3 代码生成：</strong></p>
<p>这一点类似 Eclipse，虽不是独到之处，但因为日常使用频率极高，所以还是罗列在榜单前面。</p>
<p>常用的有 fori/sout/psvm+Tab 即可生成循环、System.out、main 方法等 boilerplate 样板代码，用 Ctrl+J可 以查看所有模板。</p>
<p>后面“辅助”一节中将会讲到 Alt+Insert，在编辑窗口中点击可以生成构造函数、toString、getter/setter、重写父类方法等。</p>
<p>这两个技巧实在太常用了，几乎每天都要生成一堆 main、System.out 和 getter/setter。</p>
<p>另外，Intellij IDEA 13 中加入了后缀自动补全功能( Postfix Completion)，比模板生成更加灵活和强大。</p>
<p>例如要输入 for(User user : users) 只需输入 user.for+Tab。</p>
<p>再比如，要输入 Date birthday = user.getBirthday(); 只需输入 user.getBirthday().var+Tab 即可。</p>
<p><strong>4 编辑：</strong></p>
<p>编辑中不得不说的一大神键就是能够自动按语法选中代码的 Ctrl+W 以及反向的 Ctrl+Shift+W 了。</p>
<p>此外，Ctrl+Left/Right 移动光标到前/后单词，Ctrl+[/] 移动到前/后代码块，这些类 Vim 风格的光标移动也是一大亮点。</p>
<p>以上 Ctrl+Left/Right/[] 加上 Shift 的话就能选中跳跃范围内的代码。 Alt+Forward/Backward 移动到前/后方法。</p>
<p>还有些非常普通的像 Ctrl+Y 删除行、Ctrl+D 复制行、Ctrl+ 折叠代码就不多说了。</p>
<p>关于光标移动再多扩展一点，除了 Intellij 本身已提供的功能外，我们还可以安装 ideaVim 或者 emacsIDEAs 享受到 Vim 的快速移动和 Emacs 的 AceJump 功能(超爽！)。</p>
<p>另外，Intellij 的书签功能也是不错的，用 Ctrl+Shift+Num 定义 1-10 书签(再次按这组快捷键则是删除书签)，然后通过 Ctrl+Num 跳转。</p>
<p>这避免了多次使用前/下一编辑位置 Ctrl+Left/Right 来回跳转的麻烦，而且此快捷键默认与 Windows 热键冲突(默认多了 Alt，与 Windows 改变显示器显示方向冲突，一不小心显示器就变成倒着显式的了，冏啊)。</p>
<p><strong>5 查找打开：</strong></p>
<p>类似 Eclipse，Intellij 的 Ctrl+N/Ctrl+Shift+N 可以打开类或资源，但 Intellij 更加智能一些，我们输入的任何字符都将看作模糊匹配，省却了 Eclipse 中还有输入 * 的麻烦。</p>
<p>最新版本的 IDEA 还加入了 Search Everywhere 功能，只需按 Shift+Shift 即可在一个弹出框中搜索任何东西，包括类、资源、配置项、方法等等。</p>
<p>类的继承关系则可用 Ctrl+H 打开类层次窗口，在继承层次上跳转则用 Ctrl+B/Ctrl+Alt+B 分别对应父类或父方法定义和子类或子方法实现，查看当前类的所有方法用 Ctrl+F12。</p>
<p>要找类或方法的使用也很简单，Alt+F7。</p>
<p>要查找文本的出现位置就用 Ctrl+F/Ctrl+Shift+F 在当前窗口或全工程中查找，再配合 F3/Shift+F3 前后移动到下一匹配处。</p>
<p>Intellij 更加智能的又一佐证是在任意菜单或显示窗口，都可以直接输入你要找的单词，Intellij 就会自动为你过滤。</p>
<p><strong>6 其他辅助：</strong></p>
<p>以上这些神键配上一些辅助快捷键，即可让你的双手 90% 以上的时间摆脱鼠标，专注于键盘仿佛在进行钢琴表演。这些不起眼却是至关重要的最后一块拼图有：</p>
<p>Ø  命令：Ctrl+Shift+A 可以查找所有 Intellij 的命令，并且每个命令后面还有其快捷键。所以它不仅是一大神键，也是查找学习快捷键的工具。</p>
<p>Ø  新建：Alt+Insert 可以新建类、方法等任何东西。</p>
<p>Ø  格式化代码：格式化 import 列表 Ctrl+Alt+O，格式化代码 Ctrl+Alt+L。</p>
<p>Ø  切换窗口：Alt+Num，常用的有 1-项目结构，3-搜索结果，4/5-运行调试。Ctrl+Tab 切换标签页，Ctrl+E/Ctrl+Shift+E 打开最近打开过的或编辑过的文件。</p>
<p>Ø  单元测试：Ctrl+Alt+T 创建单元测试用例。</p>
<p>Ø  运行：Alt+Shift+F10 运行程序，Shift+F9 启动调试，Ctrl+F2 停止。</p>
<p>Ø  调试：F7/F8/F9 分别对应 Step into，Step over，Continue。</p>
<p><strong>此外还有些我自定义的，例如水平分屏 Ctrl+| 等，和一些神奇的小功能 Ctrl+Shift+V 粘贴很早以前拷贝过的，Alt+Shift+Insert 进入到列模式进行按列选中。</strong></p>
<p>Ø  Top #10切来切去：Ctrl+Tab</p>
<p>Ø  Top #9选你所想：Ctrl+W</p>
<p>Ø  Top #8代码生成：Template/Postfix +Tab</p>
<p>Ø  Top #7发号施令：Ctrl+Shift+A</p>
<p>Ø  Top #6无处藏身：Shift+Shift</p>
<p>Ø  Top #5自动完成：Ctrl+Shift+Enter</p>
<p>Ø  Top #4创造万物：Alt+Insert</p>
<p><strong>太难割舍，前三名并列吧！</strong></p>
<p>Ø  Top #1智能补全：Ctrl+Shift+Space</p>
<p>Ø  Top #1自我修复：Alt+Enter</p>
<p>Ø  Top #1重构一切：Ctrl+Shift+Alt+T</p>
<p><strong>CTRL+ALT+ left/right 前后导航编辑过的地方 Ctrl＋Shift＋Backspace 可以跳转到上次编辑的地方</strong></p>

              </div>
              <div class="toc-container">
                <ul class="markdownIt-TOC">
<li>
<ul>
<li><a href="#%E8%87%AA%E5%8A%A8%E4%BB%A3%E7%A0%81"><strong>▌自动代码</strong></a></li>
<li><a href="#%E6%9F%A5%E8%AF%A2%E5%BF%AB%E6%8D%B7%E9%94%AE"><strong>▌查询快捷键</strong></a></li>
<li><a href="#%E5%85%B6%E4%BB%96%E5%BF%AB%E6%8D%B7%E9%94%AE"><strong>▌其他快捷键</strong></a></li>
<li><a href="#svn%E5%BF%AB%E6%8D%B7%E9%94%AE"><strong>▌svn快捷键</strong></a></li>
<li><a href="#%E8%B0%83%E8%AF%95%E5%BF%AB%E6%8D%B7%E9%94%AE"><strong>▌调试快捷键</strong></a></li>
<li><a href="#%E9%87%8D%E6%9E%84"><strong>▌重构</strong></a></li>
<li><a href="#%E5%8D%81%E5%A4%A7intellij-idea%E5%BF%AB%E6%8D%B7%E9%94%AE"><strong>▌十大Intellij IDEA快捷键</strong></a></li>
</ul>
</li>
</ul>

              </div>
            </div>
          </article>
        </div>

        
          <div class="next-post">
            <div class="next">下一篇</div>
            <a href="https://ArtZoick.github.io//post/MyBatis_6">
              <h3 class="post-title">
                MyBatis_6	注解开发
              </h3>
            </a>
          </div>
        

        
          
            <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
<script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>

<div id="gitalk-container"></div>

<script>

  var gitalk = new Gitalk({
    clientID: 'a2471d09bddb5be481ee',
    clientSecret: '05d427fb27f873cfabace27b9f042f2c7f23000f',
    repo: 'ArtZoick.github.io',
    owner: 'ArtZoick',
    admin: ['ArtZoick'],
    id: (location.pathname).substring(0, 49),      // Ensure uniqueness and length less than 50
    distractionFreeMode: false  // Facebook-like distraction free mode
  })

  gitalk.render('gitalk-container')

</script>

          

          
        

        <div class="site-footer">
  <a href="https://zhidao.baidu.com/question/1867120235416383707.html" target="_blank" onclick="alert('盲生，你发现了华点！');">学习强国</a>

<!--Tido对话插件-->
<script src="//code.tidio.co/5fh6jaqvluqj8jjuf5zlqrf5tlzpktnx.js"></script>
<style>
.text-popup {
    animation: textPopup 1s;
    color: red;
    user-select: none;
    white-space: nowrap;
    position: absolute;
    z-index: 99;
}
@keyframes textPopup {
    0%, 100% {
        opacity: 0;
    }
    5% {
        opacity: 1;
    }
    100% {
        transform: translateY(-50px);    
    }
}
</style>
<script type="text/javascript" src="https://cdn.bootcss.com/canvas-nest.js/1.0.1/canvas-nest.min.js">
!function(){function n(n,e,t){return n.getAttribute(e)||t}function e(n){return document.getElementsByTagName(n)}
function t(){var t=e("script"),o=t.length,i=t[o-1];return{l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0")
,n:n(i,"count",99)}}function o(){a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidt
h,c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}function i(){r.clearRect
(0,0,a,c);var n,e,t,o,m,l;s.forEach(function(i,x){for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.
fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e<u.length;e++)n=u[e],null!==n.x&&null!==n.y&&(o=i.x-n.x,m=i.y-n.y,l=o*o+m*m,l<n.max&&(n===
y&&l>=n.max/2&&(i.x-=.03*o,i.y-=.03*m),t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")
",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke()))}),x(i)}var a,c,u,m=document.createElement("canvas"),d=t(),l="c_n"+d.l,r=m.
getContext("2d"),x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.
oRequestAnimationFrame||window.msRequestAnimationFrame||function(n){window.setTimeout(n,1e3/45)},w=Math.random,y={x:null,y:nul
l,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),
window.οnresize=o,window.οnmοusemοve=function(n){n=n||window.event,y.x=n.clientX,y.y=n.clientY},window.οnmοuseοut=function(){y
.x=null,y.y=null};for(var s=[],f=0;d.n>f;f++){var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3})}u=
s.concat([y]),setTimeout(function(){i()},100)}();
</script>

<!--鼠标点击-->
<!--富强-->
<script type="text/javascript"> 
/* 鼠标特效 */ 
var a_idx = 0; 
jQuery(document).ready(function($) { 
    $("body").click(function(e) { 
        var a = new Array("富强", "民主", "文明", "和谐", "自由", "平等", "公正" ,"法治", "爱国", "敬业", "诚信", "友善"); 
        var $i = $("<span/>").text(a[a_idx]); 
        a_idx = (a_idx + 1) % a.length; 
        var x = e.pageX, 
        y = e.pageY; 
        $i.css({ 
            "z-index": 999, 
            "top": y - 20, 
            "left": x, 
            "position": "absolute", 
            "font-weight": "bold", 
            "color": "#ff6651" 
        }); 
        $("body").append($i); 
        $i.animate({ 
            "top": y - 180, 
            "opacity": 0 
        }, 
        1500, 
        function() { 
            $i.remove(); 
        }); 
    }); 
}); 
</script>
<!--edn--富强--> | 
  <a class="rss" href="https://ArtZoick.github.io//atom.xml" target="_blank">RSS</a>
</div>

<script>
  hljs.initHighlightingOnLoad()

  let mainNavLinks = document.querySelectorAll(".markdownIt-TOC a");

  // This should probably be throttled.
  // Especially because it triggers during smooth scrolling.
  // https://lodash.com/docs/4.17.10#throttle
  // You could do like...
  // window.addEventListener("scroll", () => {
  //    _.throttle(doThatStuff, 100);
  // });
  // Only not doing it here to keep this Pen dependency-free.

  window.addEventListener("scroll", event => {
    let fromTop = window.scrollY;

    mainNavLinks.forEach((link, index) => {
      let section = document.getElementById(decodeURI(link.hash).substring(1));
      let nextSection = null
      if (mainNavLinks[index + 1]) {
        nextSection = document.getElementById(decodeURI(mainNavLinks[index + 1].hash).substring(1));
      }
      console.log('section.offsetHeight', section.offsetHeight);
      if (section.offsetTop <= fromTop) {
        if (nextSection) {
          if (nextSection.offsetTop > fromTop) {
            link.classList.add("current");
          } else {
            link.classList.remove("current");    
          }
        } else {
          link.classList.add("current");
        }
      } else {
        link.classList.remove("current");
      }
    });
  });

</script>

      </div>
    </div>
  </body>
</html>
